package com.essential.array;


import java.util.Arrays;

/*
##for 循环遍历
    通过for循环就可以遍历数组。因为数组的每个元素都可以通过索引来访问，因此，使用标准的for循环可以完成一个数组的遍历
## 使用for each循环
    直接迭代数组的每个元素
## 打印数组内容
    直接打印数组变量，得到的是数组在JVM中的引用地址
   Arrays.toString()，可以快速打印数组内容
## 小结
    遍历数组可以使用for循环，for循环可以访问数组索引，for each循环直接迭代每个数组元素，但无法获取索引；
    使用Arrays.toString()可以快速获取数组内容。
 */
public class TraversArray {
    public static void main(String[] args) {
        //for循环遍历数组
        /*
        为了实现for循环遍历，初始条件为i=0，因为索引总是从0开始，继续循环的条件为i<ns.length，因为当i=ns.length时，i已经超出了索引范围（索引范围是0 ~ ns.length-1），每次循环后，i++。
         */
        int[] ns = {1, 4, 9, 16, 25};
        for (int i = 0; i < ns.length; i++) {
            int n = ns[i];
            System.out.println(n);
        }

        //for each循环遍历
        /*
        注意：在for (int n : ns)循环中，变量n直接拿到ns数组的元素，而不是索引。
        显然for each循环更加简洁。但是，for each循环无法拿到数组的索引，因此，到底用哪一种for循环，取决于我们的需要。
         */
        int[] ns1 = { 1, 4, 9, 16, 25 };
        for (int n : ns1) {
            System.out.println(n);
        }

        //打印数组内容
        int[] ns2 = { 1, 1, 2, 3, 5, 8 };
        //直接打印，内容只是地址
        System.out.println(ns2); // 类似 [I@7852e922
        //打印内容
        System.out.println(Arrays.toString(ns2));
    }
}
